package com.mall.module.user.service;

import com.mall.module.user.domain.dto.UserLoginDTO;
import com.mall.module.user.domain.dto.UserRegisterDTO;
import com.mall.module.user.domain.entity.User;
import com.mall.module.user.domain.vo.UserLoginVO;
import com.mall.module.user.domain.vo.UserRegisterVO;

import javax.servlet.http.HttpServletRequest;

public interface UserService {

    /**
     * 用户注册
     *
     * @param registerDTO 注册信息
     * @return 注册结果
     */
    UserRegisterVO register(UserRegisterDTO registerDTO);

    /**
     * 用户登录
     *
     * @param loginDTO 登录信息
     * @return 登录结果
     */
    UserLoginVO login(UserLoginDTO loginDTO);

    /**
     * 通过ID查询用户
     *
     * @param userId 用户ID
     * @return 用户信息
     */
    User getUserById(Long userId);

    /**
     * 通过用户名查询用户
     *
     * @param username 用户名
     * @return 用户信息
     */
    User getUserByUsername(String username);

    /**
     * 通过手机号查询用户
     *
     * @param mobile 手机号
     * @return 用户信息
     */
    User getUserByMobile(String mobile);

    /**
     * 通过邮箱查询用户
     *
     * @param email 邮箱
     * @return 用户信息
     */
    User getUserByEmail(String email);

    /**
     * 更新用户信息
     *
     * @param user 用户信息
     * @return 是否成功
     */
    boolean updateUser(User user);

    /**
     * 删除用户
     *
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean deleteUser(Long userId);

    String logout(HttpServletRequest request);

    /**
     * 刷新token
     * @param request
     * @return
     */
    String refreshToken(HttpServletRequest request);
}